<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- <link rel="stylesheet" href="css/jquery.mobile-1.4.2.css" /> -->
<link rel="stylesheet" href="css/common.css" />
<link rel="stylesheet" href="css/bootstrap-theme.css" />
<link rel="stylesheet" href="css/bootstrap.css" />
<script type="text/javascript" src="js/jquery-1.11.0.js"></script>
<!-- <script type="text/javascript" src="js/jquery.mobile-1.4.2.js"></script> -->
<script type="text/javascript" src="js/bootstrap.js"></script>
<!-- <script type="text/javascript" src="js/common.js"></script> -->
<script type="text/javascript">
$.extend({
	postJSON: function( url, data, callback) {
	return $.post(url, data, callback, "json");
	}
});
////////////////////////비밀번호 유효성검사/////////////////////////////////////////////

var minimum = 6;
var maximun = 12;

function chkPw(obj, viewObj) {

	var msg = chkPwLength(obj);

	if(msg == "") msg = "안전한 비밀번호 입니다.";

	document.getElementById(viewObj).innerHTML=msg;
}

// 글자 갯수 제한
function chkPwLength(paramObj) {
	var msg = "";
	var paramCnt = paramObj.value.length;

	if(paramCnt < minimum) {
		msg = "최소 암호 글자수는 <b>" + minimum + "</b> 입니다.";
	} else if(paramCnt > maximun) {
		msg = "최대 암호 글자수는 <b>" + maximun + "</b> 입니다.";
	} else {
		msg = chkPwNumber(paramObj);
	}

	return msg;
}

// 암호 유효성 검사
function chkPwNumber(paramObj) {
	var  msg = "";

	// 특수 문자 포함 이라면 주석을 바꿔 주시기 바랍니다.
	// if(!paramObj.value.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/))
	if(!paramObj.value.match(/([a-zA-Z0-9])|([a-zA-Z0-9])/)) {
		// msg = "비밀번호는 영어, 숫자, 특수문자의 조합으로 6~16자리로 입력해주세요.";
		msg = "비밀번호는 영어, 숫자의 조합으로 6~16자리로 입력해주세요.";
	} else {
		msg = chkPwContinuity(paramObj);
	}

	return msg;
}
// 암호 연속성 검사 및 동일 문자
function chkPwContinuity(paramObj) {
	var msg = "";
	var SamePass_0 = 0; //동일문자 카운트
	var SamePass_1_str = 0; //연속성(+) 카운드(문자)
	var SamePass_2_str = 0; //연속성(-) 카운드(문자)
	var SamePass_1_num = 0; //연속성(+) 카운드(숫자)
	var SamePass_2_num = 0; //연속성(-) 카운드(숫자)

	var chr_pass_0;
	var chr_pass_1;
	var chr_pass_2;
	
	for(var i=0; i < paramObj.value.length; i++) {
		chr_pass_0 = paramObj.value.charAt(i);
		chr_pass_1 = paramObj.value.charAt(i+1);

		//동일문자 카운트
		if(chr_pass_0 == chr_pass_1)
		{
			SamePass_0 = SamePass_0 + 1;
		}


		chr_pass_2 = paramObj.value.charAt(i+2);
		
		if(chr_pass_0.charCodeAt(0) >= 48 && chr_pass_0.charCodeAt(0) <= 57) {
			//숫자
			//연속성(+) 카운드
			if(chr_pass_0.charCodeAt(0) - chr_pass_1.charCodeAt(0) == 1 && chr_pass_1.charCodeAt(0) - chr_pass_2.charCodeAt(0) == 1)
			{
				SamePass_1_num = SamePass_1_num + 1;
			}
			
			//연속성(-) 카운드
			if(chr_pass_0.charCodeAt(0) - chr_pass_1.charCodeAt(0) == -1 && chr_pass_1.charCodeAt(0) - chr_pass_2.charCodeAt(0) == -1)
			{
				SamePass_2_num = SamePass_2_num + 1;
			}
		} else {
			//문자
			//연속성(+) 카운드
			if(chr_pass_0.charCodeAt(0) - chr_pass_1.charCodeAt(0) == 1 && chr_pass_1.charCodeAt(0) - chr_pass_2.charCodeAt(0) == 1)
			{
				SamePass_1_str = SamePass_1_str + 1;
			}
			
			//연속성(-) 카운드
			if(chr_pass_0.charCodeAt(0) - chr_pass_1.charCodeAt(0) == -1 && chr_pass_1.charCodeAt(0) - chr_pass_2.charCodeAt(0) == -1)
			{
				SamePass_2_str = SamePass_2_str + 1;
			}
		}
	}
	
	if(SamePass_0 > 1) {
		msg = "동일숫자 및 문자를 3번 이상 사용하면 비밀번호가 안전하지 못합니다.";
	}

	if(SamePass_1_str > 1 || SamePass_2_str > 1 || SamePass_1_num > 1 || SamePass_2_num > 1)
	{
		msg = "연속된 문자열(123 또는 321, abc, cba 등)을\n 3자 이상 사용 할 수 없습니다.";
	}

	return msg;
}
</script>
</head>
<body>

</body>
</html>